package com.jietu.mapper;

import com.jietu.entity.Goods;
import com.jietu.entity.Vo;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
* @author LQ&LYP
* @description 针对表【goods】的数据库操作Mapper
* @createDate 2024-12-09 14:16:53
* @Entity com.jietu.entity.Goods
*/

/**
 * @Mapper  是用来映射 他的配置文件   GoodsMapper
 * @Mapper
 * 在Java开发中，特别是在使用MyBatis框架时，@Mapper 注解扮演着重要的角色。它主要用于指示某个接口是一个MyBatis的Mapper接口，这样MyBatis框架就可以自动识别并处理它。
 *
 * 1.1、主要作用
 * 标记 Mapper 接口：@Mapper 注解用于标识一个接口为MyBatis的Mapper接口。
 * 这告诉MyBatis生成这个接口的代理对象，代理对象会实现接口中定义的数据库访问操作。
 *
 * 避免 Mapper XML文件：虽然MyBatis允许使用XML文件来配置SQL语句和接口绑定，
 * 使用 @Mapper 注解可以让你完全省略XML配置。
 * 所有的SQL可以通过注解如 @Select, @Update, @Insert, 和 @Delete 直接在Mapper接口的方法上声明。
 *
 */
@Mapper
public interface GoodsMapper {
    /**
     * 双表查询
     * @return
     */
    List<Goods> findList();

    /**
     * 按照价格区间查询
     * @param startPrice
     * @param endPrice
     * @return
     */
    List<Goods> searchGoodsByPrice(@Param("startPrice") String startPrice, @Param("endPrice") String endPrice);

    /**
     * 查询各个商店的商品的数量
     * @return
     */
    int searchGoodTotal();

    /**
     * 查询每个商家各有几种商品（5分）
     * @return
     */
    List<Vo> searchGoodsGroupByBid();

    /**
     * 查询比商品平均价格高的商品信息
     * @return
     */
    List<Goods> searchGoodsHeightAvgPrice();

    /**
     * 按照编号删除指定的商品
     * @param gid
     * @return
     */
    @Delete("delete from goods where id=#{gid}")
    int deleteGoodsByid(String gid);
}




